// pages/myRecipes/myRecipes.js
import {
  getRecipes
} from '../../api/recipes';
import {
  store
} from '../../utils/store';
const app = getApp(); // 获取 app.js 的实例
Page({

  /**
   * 页面的初始数据
   */
  data: {
    recipes: [],
    statusBarHeight: 0,
    current: 1,
    pageSize: 10,
    hasMore: true, // 是否还有更多数据
    isLoading: false // 是否正在加载
  },

  /**
   * 生命周期函数--监听页面加载
   */
  async onLoad(options) {
    await app.checkLoginStatus();
    // 获取状态栏高度
    const systemInfo = wx.getSystemInfoSync();
    this.setData({
      statusBarHeight: systemInfo.statusBarHeight
    });
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   * 每次进入页面时都会调用
   */
  onShow() {
    const userInfo = store.getUserInfo();
    console.log('myRecipes页面显示，当前用户信息:', userInfo);

    if (userInfo && userInfo.userId) {
      this.fetchRecipes(userInfo.userId);
    } else {
      wx.showToast({
        title: '请先登录',
        icon: 'none'
      });
    }
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
    // 如果还有更多数据且当前不在加载中，则加载下一页
    if (this.data.hasMore && !this.data.isLoading) {
      this.loadMoreRecipes();
    }
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },

  // 获取菜谱数据
  async fetchRecipes(userId) {
    wx.showLoading({
      title: '加载中...'
    });

    try {
      // 重置页码为1
      this.setData({
        current: 1,
        isLoading: true
      });

      // 封装请求参数
      const params = {
        userId: userId,
        current: this.data.current, // 当前页码
        pageSize: this.data.pageSize // 每页大小
      };

      // 调用 API 并传递参数
      const res = await getRecipes(params);
      if (res.success) {
        this.setData({
          recipes: res.data.records,
          hasMore: res.data.records.length >= this.data.pageSize // 判断是否还有更多数据
        });
      } else {
        wx.showToast({
          title: res.message || '获取菜谱失败',
          icon: 'none'
        });
      }
    } catch (err) {
      console.error('获取菜谱数据失败:', err);
      wx.showToast({
        title: '获取菜谱数据失败',
        icon: 'none'
      });
    } finally {
      wx.hideLoading();
      this.setData({ isLoading: false });
    }
  },

  // 加载更多菜谱
  async loadMoreRecipes() {
    if (this.data.isLoading) return;

    this.setData({ 
      isLoading: true,
      current: this.data.current + 1 // 页码加1
    });

    wx.showLoading({
      title: '加载更多...'
    });

    try {
      const userInfo = store.getUserInfo();
      if (!userInfo || !userInfo.userId) {
        return;
      }

      // 封装请求参数
      const params = {
        userId: userInfo.userId,
        current: this.data.current,
        pageSize: this.data.pageSize
      };

      // 调用 API 并传递参数
      const res = await getRecipes(params);
      if (res.success) {
        if (res.data.records && res.data.records.length > 0) {
          // 将新数据追加到现有数据后面
          this.setData({
            recipes: [...this.data.recipes, ...res.data.records],
            hasMore: res.data.records.length >= this.data.pageSize
          });
        } else {
          // 没有更多数据了
          this.setData({
            hasMore: false
          });
          wx.showToast({
            title: '没有更多菜谱了',
            icon: 'none'
          });
        }
      } else {
        wx.showToast({
          title: res.message || '获取更多菜谱失败',
          icon: 'none'
        });
      }
    } catch (err) {
      console.error('获取更多菜谱数据失败:', err);
      wx.showToast({
        title: '获取更多菜谱失败',
        icon: 'none'
      });
    } finally {
      wx.hideLoading();
      this.setData({ isLoading: false });
    }
  },
  // 查看菜谱详情
  viewRecipe(e) {
    const recipeId = e.currentTarget.dataset.id;
    wx.navigateTo({
      url: `/pages/recipeDetail/recipeDetail?recipeId=${recipeId}`
    });
  },

  // 新增菜谱的点击事件
  addRecipe() {
    wx.navigateTo({
      url: `/pages/myRecipes/addRecipe/addRecipe?userId=${store.getUserInfo().userId}`
    });
  }
})